import router from '@/router'
export default {
  namespaced: true,
  state: {
    // 导航的折叠状态
    navCollapse: false,
    // navTabs 导航历史记录 右键弹出菜单 状态
    isShow: false,
    tabLeft: 0,
    tabTop: 0,
    // 导航的tab
    navTabs: sessionStorage.getItem('navTabs')
      ? JSON.parse(sessionStorage.getItem('navTabs'))
      : []
  },
  mutations: {
    TOGGLE_NAV (state) {
      // 切换导航 折叠 展开
      state.navCollapse = !state.navCollapse
    },
    SET_TAB_MENU_STATE (state, { isShow, tabLeft, tabTop }) {
      // 设置 路由导航tab的右键菜单状态
      state.isShow = isShow
      state.tabLeft = tabLeft
      state.tabTop = tabTop
    },
    ADD_NAV_TAB (state, nav) {
      /*
       增加一个 navTab
       增加之前判断 已有tabs是否已经包含要添加的tab
        如果没有 则添加
        有 则不添加
      */
      const index = state.navTabs.findIndex(tab => nav.path === tab.path)
      if (index === -1) {
        // 没有要添加的tab
        state.navTabs.push(nav) // 缓存备份
        console.log(state.navTabs, 222)
        sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
      }
    },
    DEL_SELF (state, index) {
      // 删除当前nav的tab
      state.navTabs.splice(index, 1)
      // 路由回到上一个tab对应的path
      // 是否已经全部删除 全部删除 调回首页
      // 缓存备份
      sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
      if (state.navTabs.length === 0) {
        router.push('/dashBoard')
      } else {
        router.push(state.navTabs[state.navTabs.length - 1].path)
      }
    },
    DEL_OTHER (state, index) {
      /*
        index == -1
        点击首页这个tab
      */
      if (index === -1) {
        // 点击首页tab的关闭其他
        state.navTabs = []
        router.push('/dashBoard')
        return true
      }
      // tab删除 删除其他的
      state.navTabs = state.navTabs.filter((tab, i) => i === index)
      // 缓存备份
      sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
      // 删除其他的回到我这里
      router.push(state.navTabs[0].path)
    },
    DEL_ALL_TAB (state) {
      // 删除全部
      state.navTabs = []
      router.push('/dashBoard')
      // 缓存备份
      sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
    }
  }
}
